import { axiosMock, delayFn, randArrItem } from '@/services/axiosMock'
import { DEFAULT_PAGE_SIZE } from '@/utils/pagination'
import type * as TDetail from '../AddOrEditTplRouteDrawer/interface'
import type * as TList from '../interface'

axiosMock('default', mock => {
  // 获取路由模板列表
  mock.onPost(`/tmsapi/route_template/list`).reply(
    delayFn<TList.ITplRouteListRes>(600, ({ data }) => {
      return {
        success: true,
        data: {
          total: 2500,
          records: Array(+data.size || DEFAULT_PAGE_SIZE)
            .fill(null)
            .map<TList.ITplRouteListItem>((_item, index) => {
              const count = index + 1
              const dynamicFieldList = randArrItem(
                [
                  Array(randArrItem([1, 4, 8, 12]))
                    .fill(null)
                    .map((_d, i) => `{{dynamicField${i}}}`),
                ],
                0.1,
              )
              return {
                routeId: `${data.page}${count}`,
                routeNo: randArrItem([`路由编号-${count}`], 0.1),
                templateCn: randArrItem(
                  [
                    `中文模板标题\n中文模板中文模板中文模板中文模板中文模板\n 中文模板中文模板中文模板中文模板中文模板中文模板 \n 中文模板中文模板中文模板  中文模板中文模板中文模板-${count}`,
                  ],
                  0.1,
                ),
                templateEn: randArrItem(
                  [
                    `英文模板标题\n英文模板英文模板英文模板英文模板英文模板\n 英文模板英文模板英文模板英文模板英文模板英文模板 \n 英文模板英文模板英文模板  英文模板英文模板英文模板-${count}`,
                  ],
                  0.1,
                ),
                dynamicField: dynamicFieldList?.length
                  ? randArrItem([`dynamicField0${dynamicFieldList.length > 1 ? `（${dynamicFieldList.length}）` : ''}`])
                  : null,
                dynamicFieldList,
                routeNode: randArrItem([0, 1, 2, 3, 4, 5, 6, 7, 8], 0.1),
                logisticsStatus: randArrItem([0, 1, 2, 3, 4, 5, 6, 7], 0.1),
                routeType: randArrItem([1, 2]),
                actionFlag: randArrItem([0, 1]),
                visibleFlag: randArrItem([0, 1]),
              }
            }),
        },
      }
    }),
  )

  // 删除路由模板
  mock.onPost(`/tmsapi/route_template/del`).reply(
    delayFn(600, () => {
      return { success: true }
    }),
  )

  // 获取路由模板详情
  mock.onPost(`/tmsapi/route_template/get`).reply(
    delayFn<TDetail.ITplRouteDetailRes>(600, () => {
      return {
        success: true,
        data: {
          routeId: 'routeId',
          routeNode: randArrItem([0, 1, 2, 3, 4, 5, 6, 7, 8]),
          routeNo: '路由编号',
          logisticsStatus: randArrItem([0, 1, 2, 3, 4, 5, 6, 7]),
          routeType: randArrItem([1, 2]),
          errorType: randArrItem([0, 1, 2, 3], 0.1),
          visibleFlag: randArrItem([0, 1]),
          actionFlag: randArrItem([0, 1]),
          routeDesc: {
            descId: 0,
            titleCn: '中文标题',
            titleEn: '英文标题',
            descCn: randArrItem(
              [
                `中文模板中文模板中文模板中文模板中文模板中文模板中文模板中文模板中文模板中文模板中文模板中文模板中文模板中文模板中文模板中文模板中文模板`,
              ],
              0.1,
            ),
            descEn: randArrItem(
              [
                `英文模板英文模板英文模板英文模板英文模板英文模板英文模板英文模板英文模板英文模板英文模板英文模板英文模板英文模板英文模板英文模板英文模板`,
              ],
              0.1,
            ),
          },
          routeChannelList: Array(randArrItem([1, 6, 11, 16, 21]))
            .fill(null)
            .map<TDetail.IChannelListItem>((_d, i) => ({
              channelId: i,
              channelName: randArrItem([`渠道名称${i}`]),
              channelNo: `渠道代码${i}`,
              merchantServers: randArrItem([`服务商${i}`], 0.1),
              channelInnerName: randArrItem([`内置名${i}`], 0.1),
              destinationCountry: randArrItem([`目的国${i}`], 0.1),
              firstLine: randArrItem([1, 2, 3, 4], 0.1),
              tailLine: randArrItem([1, 2], 0.1),
              keepDate: randArrItem(['10', '20', '30', '40']),
            })),
        },
      }
    }),
  )

  // 新增路由模板
  mock.onPost(`/tmsapi/route_template/add`).reply(
    delayFn(600, () => {
      return { success: true }
    }),
  )

  // 编辑路由模板
  mock.onPost(`/tmsapi/route_template/update`).reply(
    delayFn(600, () => {
      return { success: true }
    }),
  )
})
